<?php
/**
 * 数据增删改操作，使用该函数
 *
 * @param $sql string 操作的sql预处理语句：例如：insert into table_name (f1,f2,f3) values(?,?,?)
 * @param $args array 预处理sql语句中实际要包含的参数组成的数组
 * @return 返回true表示执行成功
 */
function execute ($sql, Array $args = [])
{
    $pdo = connect();
    $stmt = $pdo->prepare($sql);
    if (isset ( $args ) && ! empty ( $args )) {
        for($i = 0; $i < count ( $args ); $i ++) {
           $stmt->bindParam ( $i + 1, $args [$i] );
         }
    }
    return $stmt->execute();
}

/**
 * 执行查询数据的数据库操作
 *
 * @param $sql string select语句
 * @param $args array 预处理sql语句中实际要包含的参数组成的数组
 * @return 返回一个二维数组，表示查询结果的数据集合
 */
function query ($sql, Array $args = [])
{
    $pdo = connect();
    $stmt = $pdo->prepare($sql);
    if (isset ( $args ) && ! empty ( $args )) {
        for($i = 0; $i < count ( $args ); $i ++) {
           $stmt->bindParam ( $i + 1, $args [$i] );
         }
    }
    $stmt->execute();
    $data = [];
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
      $data[] = $row;
    }
    return $data;
}

/**
 * 根据db.php配置的数据库链接信息，链接数据库，返回mysqli链接资源变量
 *
 * @return 返回mysqli资源变量
 */
function connect ()
{
    $config = require 'config.php';
    $host = $config['host'];
    $db = $config['db'];
    $user = $config['user'];
    $password = $config['password'];

    $dsn = "mysql:host=$host;dbname=$db";
    try {
      $pdo = new PDO($dsn, $user, $password);
      return $pdo;
    } catch (PDOException $e) {
    }
    return null;
}